/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.model.domain.ubicacion;

import com.model.domain.persona.ResultadoEntrevistaHogar;
import util.NumberUtil;
import com.model.dao.orm.Key;

/**
 *
 * @author Rdelacruz
 */
public class GrupoViviendasReporte //Agrupados por ODEI, MES, PERIODO
implements Key
{
    private Conglomerado conglomerado;
    //private Odei odei;//estan en Conglomerado
    //private Mes mes;//estan en Conglomerado
    //private Periodo periodo;//estan en Conglomerado
    
    //NIVEL DE VIVIENDAS
    private Integer nViviendasMarco=0;
    private Integer nViviendasCampo=0;
    private Integer nViviendasReemplazables=0;
    private Integer nHogaresDeclarados=0;
    
    //NIVEL DE HOGARES
    //private Integer nHogaresCampo=0;    
    private Integer nHogaresCompletos=0;
    private Integer nHogaresIncompletos=0;
    private Integer nHogaresRechazados=0;
    private Integer nHogaresAusentes=0;
    private Integer nHogaresDesocupados=0;    
    private Integer nHogaresOtros=0;
    private Integer nHogaresSinResultado=0;
             
    public GrupoViviendasReporte() {
        
    }       
    
    @Override
    public String getKey() {
        //return odei.getCodigo()+"|"+mes.getCodigo()+"|"+periodo.getCodigo();
        Conglomerado c = conglomerado;
        return c.getOdei().getCodigo()+"|"+c.getMes().getCodigo()+"|"+c.getPeriodo().getCodigo();
    } 
    
    public void addNumeroViviendasMarco(Integer cantidad) {
        this.nViviendasMarco +=  cantidad;
    }
    
    public void addNumeroViviendasCampo(Integer cantidad) {
        this.nViviendasCampo +=  cantidad;
    }
    
    public void addNumeroViviendasReemplazables(Integer cantidad) {
        this.nViviendasReemplazables +=  cantidad;
    }
    
    public void addNumeroHogaresDeclarados(Integer cantidad) {
        this.nHogaresDeclarados += cantidad;
    }
    
    //public void addNumeroHogaresCampo(Integer cantidad) {
    //    this.nHogaresCampo +=  cantidad;
    //}
    
    public void addNumeroHogaresPorResultado(ResultadoEntrevistaHogar resultadoFinal, Integer cantidad) {
        switch(resultadoFinal) {
            case COMPLETA:
                nHogaresCompletos+=cantidad;
                break;
            case INCOMPLETA:
                nHogaresIncompletos+=cantidad;
                break;
            case RECHAZADA:
                nHogaresRechazados+=cantidad;
                break;    
            case AUSENTE:
                nHogaresAusentes+=cantidad;
                break;    
            case DESOCUPADO:
                nHogaresDesocupados+=cantidad;
                break;    
            case OTROS:
                nHogaresOtros+=cantidad;
                break;    
            case SIN_INICIAR:
                nHogaresSinResultado+=cantidad;
                break;                
        }
    }
    
    public int getNumeroViviendasNoReemplazables() {
        return nViviendasCampo - nViviendasReemplazables;
        //return nHogaresCampo - nHogaresDesocupados - nHogaresOtros;
    }
    
    public int getNumeroHogaresCampo() {
        return nHogaresCompletos
                +nHogaresIncompletos
                +nHogaresRechazados
                +nHogaresAusentes
                +nHogaresDesocupados
                +nHogaresOtros
                +nHogaresSinResultado;
    }
    
    public String getPorcentajeAvanceViviendasCampo() {         
        return NumberUtil.fraccionToPorcentaje2Decimales(nViviendasCampo, nViviendasMarco,false);
        //return NumberUtil.fraccionToPorcentaje2Decimales(getNumeroViviendasNoReemplazables(), nViviendasMarco,false);
    }
    
    public String getPorcentajeHogaresCompletos() {        
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresCompletos, getNumeroHogaresCampo(),false);
    }

    public String getPorcentajeHogaresIncompletos() {
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresIncompletos, getNumeroHogaresCampo(),false);
    }

    public String getPorcentajeHogaresRechazados() {        
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresRechazados, getNumeroHogaresCampo(),false);
    }

    public String getPorcentajeHogaresAusentes() {        
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresAusentes, getNumeroHogaresCampo(),false);
    }

    public String getPorcentajeHogaresDesocupados() {        
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresDesocupados, getNumeroHogaresCampo(),false);
    }

    public String getPorcentajeHogaresOtros() {        
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresOtros, getNumeroHogaresCampo(),false);
    }
    
    public String getPorcentajeHogaresSinResultado() {        
        return NumberUtil.fraccionToPorcentaje2Decimales(nHogaresSinResultado, getNumeroHogaresCampo(),false);
    }
    
    ///////////////////////////////////
    
    public Conglomerado getConglomerado() {
        return conglomerado;
    }

    public void setConglomerado(Conglomerado conglomerado) {
        this.conglomerado = conglomerado;
    }

    public Integer getnViviendasReemplazables() {
        return nViviendasReemplazables;
    }

    public void setnViviendasReemplazables(Integer nViviendasReemplazables) {
        this.nViviendasReemplazables = nViviendasReemplazables;
    }
    
    public Integer getnViviendasMarco() {
        return nViviendasMarco;
    }

    public void setnViviendasMarco(Integer nViviendasMarco) {
        this.nViviendasMarco = nViviendasMarco;
    }
    
    public Integer getnViviendasCampo() {
        return nViviendasCampo;
    }

    public void setnViviendasCampo(Integer nViviendasCampo) {
        this.nViviendasCampo = nViviendasCampo;
    }
    
    public Integer getnHogaresDeclarados() {
        return nHogaresDeclarados;
    }

    public void setnHogaresDeclarados(Integer nHogaresDeclarados) {
        this.nHogaresDeclarados = nHogaresDeclarados;
    }
    
   
    public Integer getnHogaresCompletos() {
        return nHogaresCompletos;
    }

    public void setnHogaresCompletos(Integer nHogaresCompletos) {
        this.nHogaresCompletos = nHogaresCompletos;
    }

    public Integer getnHogaresIncompletos() {
        return nHogaresIncompletos;
    }

    public void setnHogaresIncompletos(Integer nHogaresIncompletos) {
        this.nHogaresIncompletos = nHogaresIncompletos;
    }

    public Integer getnHogaresRechazados() {
        return nHogaresRechazados;
    }

    public void setnHogaresRechazados(Integer nHogaresRechazados) {
        this.nHogaresRechazados = nHogaresRechazados;
    }

    public Integer getnHogaresAusentes() {
        return nHogaresAusentes;
    }

    public void setnHogaresAusentes(Integer nHogaresAusentes) {
        this.nHogaresAusentes = nHogaresAusentes;
    }

    public Integer getnHogaresDesocupados() {
        return nHogaresDesocupados;
    }

    public void setnHogaresDesocupados(Integer nHogaresDesocupados) {
        this.nHogaresDesocupados = nHogaresDesocupados;
    }

    public Integer getnHogaresOtros() {
        return nHogaresOtros;
    }

    public void setnHogaresOtros(Integer nHogaresOtros) {
        this.nHogaresOtros = nHogaresOtros;
    }

    public Integer getnHogaresSinResultado() {
        return nHogaresSinResultado;
    }

    public void setnHogaresSinResultado(Integer nHogaresSinResultado) {
        this.nHogaresSinResultado = nHogaresSinResultado;
    }


    
}
